package tables

// AmsAsset 资产表
type AmsAsset struct {
	Id          int64          `json:"id,string" gorm:"primaryKey;comment:'资产id'"`
	AssetCode   string         `json:"assetCode"`          // 资产编号
	LabelType   string         `json:"labelType"`          // 标签类型，默认 RFID
	LabelCode   string         `json:"labelCode"`          // 标签编码
	TypeId      int64          `json:"typeId,string"`      // 资产类型,可选：有形资产、无形资产、耗材
	Name        string         `json:"name"`               //名称
	CategoryId  int64          `json:"categoryId,string"`  // 分类ID
	Tag         string         `json:"tag"`                // 标签，可以有多个
	Admin       string         `json:"admin"`              // 管理人
	AdminId     int64          `json:"adminId,string"`     // 管理人id
	Keeper      string         `json:"keeper"`             // 持有人
	KeeperId    int64          `json:"keeperId,string"`    // 持有人id
	KeeperOrg   string         `json:"keeperOrg"`          // 持有部门
	KeeperOrgId int64          `json:"keeperOrgId,string"` // 持有部门ID
	Description string         `json:"description"`        //描述
	CreateAt    int64          `json:"createAt,string"`    // 创建时间
	Extend      AmsAssetExtend `gorm:"foreignKey:AssetId"`
	Num         int64          `json:"num,string"` // 数量，默认1，只有耗材才有数量
}
type AmsAssetExtend struct {
	AssetId    int64  `json:"assetId,string" `
	ExtendInfo string `json:"extendInfo"` // 扩展信息，是json字符串
	// 需要聚合统计的信息，从 ExtendInfo 中提取出来作为列存在
	Price        float64 `json:"price"`               // 采购价格
	BuyAt        int64   `json:"buyAt,string"`        // 采购时间
	ExpirationAt int64   `json:"expirationAt,string"` // 到期时间
}

type AmsAssetType struct {
	Id          int64  `json:"id,string" gorm:"primaryKey;comment:'资产类型表ID，关联 AmsAsset.TypeId'"`
	Name        string `json:"name"`        // 名称
	Description string `json:"description"` //描述
}

type AmsAssetCategory struct {
	Id          int64  `json:"id,string" gorm:"primaryKey;comment:'资产分类表ID，关联 AmsAsset.CategoryId'"`
	Name        string `json:"name"`            // 名称
	Description string `json:"description"`     // 描述
	ParentId    int64  `json:"parentId,string"` //父id
}

func (t *AmsAsset) TableName() string {
	return "ams_asset"
}
func (t *AmsAssetExtend) TableName() string {
	return "ams_asset_extend"
}
func (t *AmsAssetType) TableName() string {
	return "ams_asset_type"
}
func (t *AmsAssetCategory) TableName() string {
	return "ams_asset_category"
}
